/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.apli.haiam.ejb.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author Informática
 */
@Entity
@Table(name = "adm_medico")
@NamedQueries({
    @NamedQuery(name = "AdmMedico.findAll", query = "SELECT a FROM AdmMedico a")})
public class AdmMedico implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "ame_id")
    private Integer ameId;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 128)
    @Column(name = "ame_apellido")
    private String ameApellido;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 128)
    @Column(name = "ame_nombre")
    private String ameNombre;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 16)
    @Column(name = "ame_cedula")
    private String ameCedula;
    @Size(max = 128)
    @Column(name = "ame_direccion")
    private String ameDireccion;
    @Size(max = 16)
    @Column(name = "ame_telefono_conv")
    private String ameTelefonoConv;
    @Size(max = 16)
    @Column(name = "ame_telefono_movil")
    private String ameTelefonoMovil;
    @Size(max = 16)
    @Column(name = "ame_codigo_msp")
    private String ameCodigoMsp;
    @Column(name = "ame_genero")
    private Integer ameGenero;
    @Column(name = "ame_fecha_de_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date ameFechaDeNacimiento;
    @Size(max = 64)
    @Column(name = "ame_email")
    private String ameEmail;
    @Column(name = "ame_estado")
    private Integer ameEstado;
    @Column(name = "ame_fecha_ingreso")
    @Temporal(TemporalType.DATE)
    private Date ameFechaIngreso;
    @Column(name = "ame_fecha_salida")
    @Temporal(TemporalType.DATE)
    private Date ameFechaSalida;
    @Size(max = 128)
    @Column(name = "ame_nombre_full")
    private String ameNombreFull;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ame_tipo_consulta")
    private int ameTipoConsulta;
    @JoinTable(name = "adm_consulta_medico", joinColumns = {
        @JoinColumn(name = "ame_id", referencedColumnName = "ame_id")}, inverseJoinColumns = {
        @JoinColumn(name = "atc_id", referencedColumnName = "atc_id")})
    @ManyToMany(fetch = FetchType.LAZY)
    private List<AdmTipoConsulta> admTipoConsultaList;
    @OneToMany(mappedBy = "admMedico", fetch = FetchType.LAZY)
    private List<AdmPermiso> admPermisoList;
    @OneToMany(mappedBy = "admMedico", fetch = FetchType.LAZY)
    private List<AdmUsuario> admUsuarioList;
    @OneToMany(mappedBy = "admMedico", fetch = FetchType.LAZY)
    private List<HosCondicionPaciente> hosCondicionPacienteList;
    @JoinColumn(name = "cna_id", referencedColumnName = "cna_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private CexNacionalidad cexNacionalidad;
    @JoinColumn(name = "cgc_id", referencedColumnName = "cgc_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private CexGrupoCultural cexGrupoCultural;
    @JoinColumn(name = "id_institucion", referencedColumnName = "id_institucion")
    @ManyToOne(fetch = FetchType.LAZY)
    private AdmInstitucion admInstitucion;
    @JoinColumn(name = "afp_id", referencedColumnName = "afp_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private AdmFormacionProfesional admFormacionProfesional;
    @OneToMany(mappedBy = "admMedico", fetch = FetchType.LAZY)
    private List<CexEspecialidadMedico> cexEspecialidadMedicoList;

    public AdmMedico() {
    }

    public AdmMedico(Integer ameId) {
        this.ameId = ameId;
    }

    public AdmMedico(Integer ameId, String ameApellido, String ameNombre, String ameCedula, int ameTipoConsulta) {
        this.ameId = ameId;
        this.ameApellido = ameApellido;
        this.ameNombre = ameNombre;
        this.ameCedula = ameCedula;
        this.ameTipoConsulta = ameTipoConsulta;
    }

    public Integer getAmeId() {
        return ameId;
    }

    public void setAmeId(Integer ameId) {
        this.ameId = ameId;
    }

    public String getAmeApellido() {
        return ameApellido;
    }

    public void setAmeApellido(String ameApellido) {
        this.ameApellido = ameApellido;
    }

    public String getAmeNombre() {
        return ameNombre;
    }

    public void setAmeNombre(String ameNombre) {
        this.ameNombre = ameNombre;
    }

    public String getAmeCedula() {
        return ameCedula;
    }

    public void setAmeCedula(String ameCedula) {
        this.ameCedula = ameCedula;
    }

    public String getAmeDireccion() {
        return ameDireccion;
    }

    public void setAmeDireccion(String ameDireccion) {
        this.ameDireccion = ameDireccion;
    }

    public String getAmeTelefonoConv() {
        return ameTelefonoConv;
    }

    public void setAmeTelefonoConv(String ameTelefonoConv) {
        this.ameTelefonoConv = ameTelefonoConv;
    }

    public String getAmeTelefonoMovil() {
        return ameTelefonoMovil;
    }

    public void setAmeTelefonoMovil(String ameTelefonoMovil) {
        this.ameTelefonoMovil = ameTelefonoMovil;
    }

    public String getAmeCodigoMsp() {
        return ameCodigoMsp;
    }

    public void setAmeCodigoMsp(String ameCodigoMsp) {
        this.ameCodigoMsp = ameCodigoMsp;
    }

    public Integer getAmeGenero() {
        return ameGenero;
    }

    public void setAmeGenero(Integer ameGenero) {
        this.ameGenero = ameGenero;
    }

    public Date getAmeFechaDeNacimiento() {
        return ameFechaDeNacimiento;
    }

    public void setAmeFechaDeNacimiento(Date ameFechaDeNacimiento) {
        this.ameFechaDeNacimiento = ameFechaDeNacimiento;
    }

    public String getAmeEmail() {
        return ameEmail;
    }

    public void setAmeEmail(String ameEmail) {
        this.ameEmail = ameEmail;
    }

    public Integer getAmeEstado() {
        return ameEstado;
    }

    public void setAmeEstado(Integer ameEstado) {
        this.ameEstado = ameEstado;
    }

    public Date getAmeFechaIngreso() {
        return ameFechaIngreso;
    }

    public void setAmeFechaIngreso(Date ameFechaIngreso) {
        this.ameFechaIngreso = ameFechaIngreso;
    }

    public Date getAmeFechaSalida() {
        return ameFechaSalida;
    }

    public void setAmeFechaSalida(Date ameFechaSalida) {
        this.ameFechaSalida = ameFechaSalida;
    }

    public String getAmeNombreFull() {
        return ameNombreFull;
    }

    public void setAmeNombreFull(String ameNombreFull) {
        this.ameNombreFull = ameNombreFull;
    }

    public int getAmeTipoConsulta() {
        return ameTipoConsulta;
    }

    public void setAmeTipoConsulta(int ameTipoConsulta) {
        this.ameTipoConsulta = ameTipoConsulta;
    }

    public List<AdmTipoConsulta> getAdmTipoConsultaList() {
        return admTipoConsultaList;
    }

    public void setAdmTipoConsultaList(List<AdmTipoConsulta> admTipoConsultaList) {
        this.admTipoConsultaList = admTipoConsultaList;
    }

    public List<AdmPermiso> getAdmPermisoList() {
        return admPermisoList;
    }

    public void setAdmPermisoList(List<AdmPermiso> admPermisoList) {
        this.admPermisoList = admPermisoList;
    }

    public List<AdmUsuario> getAdmUsuarioList() {
        return admUsuarioList;
    }

    public void setAdmUsuarioList(List<AdmUsuario> admUsuarioList) {
        this.admUsuarioList = admUsuarioList;
    }

    public List<HosCondicionPaciente> getHosCondicionPacienteList() {
        return hosCondicionPacienteList;
    }

    public void setHosCondicionPacienteList(List<HosCondicionPaciente> hosCondicionPacienteList) {
        this.hosCondicionPacienteList = hosCondicionPacienteList;
    }

    public CexNacionalidad getCexNacionalidad() {
        return cexNacionalidad;
    }

    public void setCexNacionalidad(CexNacionalidad cexNacionalidad) {
        this.cexNacionalidad = cexNacionalidad;
    }

    public CexGrupoCultural getCexGrupoCultural() {
        return cexGrupoCultural;
    }

    public void setCexGrupoCultural(CexGrupoCultural cexGrupoCultural) {
        this.cexGrupoCultural = cexGrupoCultural;
    }

    public AdmInstitucion getAdmInstitucion() {
        return admInstitucion;
    }

    public void setAdmInstitucion(AdmInstitucion admInstitucion) {
        this.admInstitucion = admInstitucion;
    }

   

    public AdmFormacionProfesional getAdmFormacionProfesional() {
        return admFormacionProfesional;
    }

    public void setAdmFormacionProfesional(AdmFormacionProfesional admFormacionProfesional) {
        this.admFormacionProfesional = admFormacionProfesional;
    }

    public List<CexEspecialidadMedico> getCexEspecialidadMedicoList() {
        return cexEspecialidadMedicoList;
    }

    public void setCexEspecialidadMedicoList(List<CexEspecialidadMedico> cexEspecialidadMedicoList) {
        this.cexEspecialidadMedicoList = cexEspecialidadMedicoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ameId != null ? ameId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AdmMedico)) {
            return false;
        }
        AdmMedico other = (AdmMedico) object;
        if ((this.ameId == null && other.ameId != null) || (this.ameId != null && !this.ameId.equals(other.ameId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.apli.haiam.ejb.entidades.AdmMedico[ ameId=" + ameId + " ]";
    }
    
}
